home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / UIDefaults.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  5.6 KB  |  250 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.Insets;
  7. import java.beans.PropertyChangeListener;
  8. import java.lang.reflect.Method;
  9. import java.util.Hashtable;
  10. import javax.swing.border.Border;
  11. import javax.swing.event.SwingPropertyChangeSupport;
  12. import javax.swing.plaf.ComponentUI;
  13.  
  14. public class UIDefaults extends Hashtable {
  15.    private static final Object PENDING = new String("Pending");
  16.    private SwingPropertyChangeSupport changeSupport;
  17.    // $FF: synthetic field
  18.    static Class class$javax$swing$JComponent;
  19.  
  20.    public UIDefaults() {
  21.    }
  22.  
  23.    public UIDefaults(Object[] var1) {
  24.       super(var1.length / 2);
  25.  
  26.       for(int var2 = 0; var2 < var1.length; var2 += 2) {
  27.          super.put(var1[var2], var1[var2 + 1]);
  28.       }
  29.  
  30.    }
  31.  
  32.    public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
  33.       if (this.changeSupport == null) {
  34.          this.changeSupport = new SwingPropertyChangeSupport(this);
  35.       }
  36.  
  37.       this.changeSupport.addPropertyChangeListener(var1);
  38.    }
  39.  
  40.    // $FF: synthetic method
  41.    static Class class$(String var0) {
  42.       try {
  43.          return Class.forName(var0);
  44.       } catch (ClassNotFoundException var2) {
  45.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  46.       }
  47.    }
  48.  
  49.    protected void firePropertyChange(String var1, Object var2, Object var3) {
  50.       if (this.changeSupport != null) {
  51.          this.changeSupport.firePropertyChange(var1, var2, var3);
  52.       }
  53.  
  54.    }
  55.  
  56.    public Object get(Object var1) {
  57.       Object var2 = super.get(var1);
  58.       if (var2 != PENDING && !(var2 instanceof ActiveValue) && !(var2 instanceof LazyValue)) {
  59.          return var2;
  60.       } else {
  61.          synchronized(this){}
  62.  
  63.          try {
  64.             var2 = super.get(var1);
  65.             if (var2 == PENDING) {
  66.                do {
  67.                   try {
  68.                      this.wait();
  69.                   } catch (InterruptedException var26) {
  70.                   }
  71.  
  72.                   var2 = super.get(var1);
  73.                } while(var2 == PENDING);
  74.  
  75.                Object var31 = var2;
  76.                return var31;
  77.             }
  78.  
  79.             if (var2 instanceof LazyValue) {
  80.                super.put(var1, PENDING);
  81.             } else if (!(var2 instanceof ActiveValue)) {
  82.                Object var3 = var2;
  83.                return var3;
  84.             }
  85.          } catch (Throwable var28) {
  86.             throw var28;
  87.          }
  88.  
  89.          if (var2 instanceof LazyValue) {
  90.             try {
  91.                var2 = ((LazyValue)var2).createValue(this);
  92.             } finally {
  93.                synchronized(this){}
  94.  
  95.                try {
  96.                   if (var2 == null) {
  97.                      super.remove(var1);
  98.                   } else {
  99.                      super.put(var1, var2);
  100.                   }
  101.  
  102.                   this.notify();
  103.                } catch (Throwable var25) {
  104.                   throw var25;
  105.                }
  106.  
  107.             }
  108.          } else {
  109.             var2 = ((ActiveValue)var2).createValue(this);
  110.          }
  111.  
  112.          return var2;
  113.       }
  114.    }
  115.  
  116.    public Border getBorder(Object var1) {
  117.       Object var2 = this.get(var1);
  118.       return var2 instanceof Border ? (Border)var2 : null;
  119.    }
  120.  
  121.    public Color getColor(Object var1) {
  122.       Object var2 = this.get(var1);
  123.       return var2 instanceof Color ? (Color)var2 : null;
  124.    }
  125.  
  126.    public Dimension getDimension(Object var1) {
  127.       Object var2 = this.get(var1);
  128.       return var2 instanceof Dimension ? (Dimension)var2 : null;
  129.    }
  130.  
  131.    public Font getFont(Object var1) {
  132.       Object var2 = this.get(var1);
  133.       return var2 instanceof Font ? (Font)var2 : null;
  134.    }
  135.  
  136.    public Icon getIcon(Object var1) {
  137.       Object var2 = this.get(var1);
  138.       return var2 instanceof Icon ? (Icon)var2 : null;
  139.    }
  140.  
  141.    public Insets getInsets(Object var1) {
  142.       Object var2 = this.get(var1);
  143.       return var2 instanceof Insets ? (Insets)var2 : null;
  144.    }
  145.  
  146.    public int getInt(Object var1) {
  147.       Object var2 = this.get(var1);
  148.       return var2 instanceof Integer ? (Integer)var2 : 0;
  149.    }
  150.  
  151.    public String getString(Object var1) {
  152.       Object var2 = this.get(var1);
  153.       return var2 instanceof String ? (String)var2 : null;
  154.    }
  155.  
  156.    public ComponentUI getUI(JComponent var1) {
  157.       Object var2 = this.get("ClassLoader");
  158.       ClassLoader var3 = var2 != null ? (ClassLoader)var2 : var1.getClass().getClassLoader();
  159.       Class var4 = this.getUIClass(var1.getUIClassID(), var3);
  160.       Object var5 = null;
  161.       if (var4 == null) {
  162.          this.getUIError("no ComponentUI class for: " + var1);
  163.       } else {
  164.          try {
  165.             Method var6 = (Method)this.get(var4);
  166.             if (var6 == null) {
  167.                Class var7 = class$javax$swing$JComponent != null ? class$javax$swing$JComponent : (class$javax$swing$JComponent = class$("javax.swing.JComponent"));
  168.                var6 = var4.getMethod("createUI", var7);
  169.                this.put(var4, var6);
  170.             }
  171.  
  172.             var5 = var6.invoke((Object)null, var1);
  173.          } catch (NoSuchMethodException var8) {
  174.             this.getUIError("static createUI() method not found in " + var4);
  175.          } catch (Exception var9) {
  176.             this.getUIError("createUI() failed for " + var1 + " " + var9);
  177.          }
  178.       }
  179.  
  180.       return (ComponentUI)var5;
  181.    }
  182.  
  183.    public Class getUIClass(String var1) {
  184.       return this.getUIClass(var1, (ClassLoader)null);
  185.    }
  186.  
  187.    public Class getUIClass(String var1, ClassLoader var2) {
  188.       try {
  189.          String var3 = (String)this.get(var1);
  190.          Class var4 = (Class)this.get(var3);
  191.          if (var4 == null) {
  192.             if (var2 == null) {
  193.                var4 = SwingUtilities.loadSystemClass(var3);
  194.             } else {
  195.                var4 = var2.loadClass(var3);
  196.             }
  197.  
  198.             if (var4 != null) {
  199.                this.put(var3, var4);
  200.             }
  201.          }
  202.  
  203.          return var4;
  204.       } catch (ClassNotFoundException var5) {
  205.          return null;
  206.       } catch (ClassCastException var6) {
  207.          return null;
  208.       }
  209.    }
  210.  
  211.    protected void getUIError(String var1) {
  212.       System.err.println("UIDefaults.getUI() failed: " + var1);
  213.  
  214.       try {
  215.          throw new Error();
  216.       } catch (Throwable var3) {
  217.          var3.printStackTrace();
  218.       }
  219.    }
  220.  
  221.    public Object put(Object var1, Object var2) {
  222.       Object var3 = var2 == null ? super.remove(var1) : super.put(var1, var2);
  223.       if (var1 instanceof String) {
  224.          this.firePropertyChange((String)var1, var3, var2);
  225.       }
  226.  
  227.       return var3;
  228.    }
  229.  
  230.    public void putDefaults(Object[] var1) {
  231.       for(int var2 = 0; var2 < var1.length; var2 += 2) {
  232.          Object var3 = var1[var2 + 1];
  233.          if (var3 == null) {
  234.             super.remove(var1[var2]);
  235.          } else {
  236.             super.put(var1[var2], var3);
  237.          }
  238.       }
  239.  
  240.       this.firePropertyChange("UIDefaults", (Object)null, (Object)null);
  241.    }
  242.  
  243.    public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
  244.       if (this.changeSupport != null) {
  245.          this.changeSupport.removePropertyChangeListener(var1);
  246.       }
  247.  
  248.    }
  249. }
  250.